Reconciling Buffer Management with Persistence Optimisations
نویسندگان
چکیده
The so-called 'read' and 'write' barriers present an obstacle to the efficient execution of persistent programs that use a volatile object buffer, nonvolatile object store memory model. The barriers, implemented as checks added to the code, are required to ensure that objects are moved from store to buffer before being used and, if updated in the buffer, that they are written back on periodic checkpoints. Static read and write barrier optimisations are identified that require runtime guarantees on certain objects' remaining resident in the buffer. These objects are said to be 'pinned'. Object pinning conflicts with the buffer manager's freedom to evict objects from the buffer when it is full . A contract between the buffer manager and the code optimiser guarantees a minimum level of pinning for each thread. Beyond this guarantee, heuristics added to the buffer manager allow adjustment of the level of pinning for each thread according to the prevailing collection and individual states of threads, to minimise pinning vs object management conflicts. Optimisation of the write barrier additionally requires the buffer manager to uphold certain guarantees across checkpoint operations. This paper presents the design of buffer management mechanisms to uphold the pinning and update guarantees and identifies the heuristics used to adjust the level of pinning allocated to each thread. Details of the mechanisms' implementation in the PJama system are given. Measurements show that the additional functionality does not represent a significant overhead to the operation of the system, when running the OO7 benchmark.
منابع مشابه
Flash-Aware Buffer Management for Database Systems
Classical buffer replacement policies, e. g., LRU, are suboptimal for database systems having flash disks for persistence, because they are not aware of the distinguished characteristics of flash-based storage devices. We introduce the basic principles of buffer management for such devices and present two efficient buffer algorithms that apply these principles. These algorithms significantly im...
متن کاملCFDC: A Flash-Aware Buffer Management Algorithm for Database Systems
Classical buffer replacement policies, e.g., LRU, are suboptimal for database systems having flash disks for persistence, because they are not aware of the distinguished characteristics of those storage devices. We present CFDC (Clean-First Dirty-Clustered), a flash-aware buffer management algorithm, which emphasizes that clean buffer pages are first considered for replacement and that modified...
متن کاملTowards Compile-Time Optimisations for Persistence
We consider how a persistent programming language might offer performance competitive with that of non-persistent languages, at least on memory resident data. We are concerned with object-oriented languages, and with implementing persistence via object faulting, where the system detects uses of non-resident objects and fetches them on demand. We present some background on object faulting and me...
متن کاملAnalysing, Profiling and Optimising Orthogonal Persistence for Java
Persistent systems manage main memory as a cache for efficient access to frequently-accessed persistent data. Good cache management requires some knowledge of the semantics of the applications running against it. We are attacking the performance problems of persistence for Java through analysis, profiling, and optimisation of Java classes and methods executing in an orthogonally persistent sett...
متن کاملDecoupling Persistence Services from DBMS Buffer Management
Advances in DRAM technology and, in turn, substantial cost reduction for volatile memory in recent years require an evolution of database system architectures to take full benefit of large buffer pools. Having huge memory sizes, an up-to-date version of database pages on stable storage is more than ever necessary to support fast and effective crash recovery. In this contribution, we consider im...
متن کامل